//package com.baomidou.mybatisplus;
//
//import com.baomidou.mybatisplus.annotation.DbType;
//import com.baomidou.mybatisplus.annotation.IdType;
//import com.baomidou.mybatisplus.generator.AutoGenerator;
//import com.baomidou.mybatisplus.generator.config.DataSourceConfig;
//import com.baomidou.mybatisplus.generator.config.GlobalConfig;
//import com.baomidou.mybatisplus.generator.config.PackageConfig;
//import com.baomidou.mybatisplus.generator.config.StrategyConfig;
//import com.baomidou.mybatisplus.generator.config.rules.DateType;
//import com.baomidou.mybatisplus.generator.config.rules.NamingStrategy;
//import com.baomidou.mybatisplus.generator.engine.VelocityTemplateEngine;
//
//import java.util.Arrays;
//import java.util.List;
//
//
///**
// * MyBatis-Plus 代码自动生成器
// * mybatis-plus-generator 3.5.1-
// */
//public class MyCodeGenerator {
//
//    public static void main(String[] args) {
//        List<String> tableNames = Arrays.asList("y_report_ds", "y_report_sql", "y_report_api", "y_report_log", "y_report_user");
//        new MyCodeGenerator().autoGeneratorExecute(tableNames.toArray(new String[0]));
//    }
//
//    /**
//     * 文件配置类
//     */
//    private static class CodeGeneratorConfig {
//        // 全局配置
//        //private static String outputDir = System.getProperty("user.dir") + "/src/main/java";
//        private static String outputDir = "code";
//
//        // 生成文件的输出目录 默认是true
//        private static boolean fileOverride = true;   // 是否覆盖文件
//        private static boolean open = false;    // 是否打开输出目录 默认是 true
//        private static String author = "y";   // 开发作者
//        private static boolean swagger2 = true;    // 开启 swagger2 模式
//        private static DateType dateType = DateType.TIME_PACK; // 时间类型对应策略
//        private static IdType idType = IdType.ASSIGN_ID;   //  指定生成的主键的ID类型
//
//        // 数据源配置
//        private static String driverName = "com.mysql.cj.jdbc.Driver";  // 驱动名称
//        private static String url = "jdbc:mysql://81.71.129.74:61306/y_report_db?useSSL=true&useUnicode=true&characterEncoding=UTF8"; // 驱动连接的URL
//        private static String username = "root";    // 数据库连接用户名
//        private static String password = "123456";  // 数据库连接密码
//        private static DbType dbType = DbType.MYSQL;    // 数据库类型
//
//        // 包配置
//        private static String parent = "com.y.report";  // 父包名
//        private static String moduleName = "";  // 父包模块名
//        private static String entity = "entity.basic";  // Entity包名
//        private static String mapper = "mapper.basic";  // Mapper包名
//        private static String xml = "mapper.basic.xml";  //xml包名
//        private static String service = "service.basic"; // Service包名
//        private static String serviceImpl = "service.basic.impl"; // Service包名
//        private static String controller = "controller.basic";  // Controller包名
//
//
//        // 策略配置
//        private static NamingStrategy naming = NamingStrategy.underline_to_camel;   // 数据库表映射到实体的命名策略
//        private static NamingStrategy columnNaming = NamingStrategy.underline_to_camel; // 数据库表字段映射到实体的命名策略
//        private static boolean entityLombokModel = true;    // 【实体】是否为lombok模型（默认 false）
//        //private static String logicDeleteFieldName = "deleted"; // 逻辑删除属性名称
//        //private static List<TableFill> tableFills =    // 表填充字段
//        //        Arrays.asList(
//        //                new TableFill("gmt_create", FieldFill.INSERT),
//        //                new TableFill("gmt_modified", FieldFill.INSERT_UPDATE)
//        //        );
//        //private static String versionFieldName = "version"; // 乐观锁属性名称
//        private static boolean restControllerStyle = true;
//        private static boolean controllerMappingHyphenStyle = true; // url 下划线名命
//    }
//
//    /**
//     * 构造方法私有化
//     */
//    private MyCodeGenerator() {
//    }
//
//    /**
//     * 执行 MyBatis-Plus 的代码生成器
//     *
//     * @param tables 需要创建的数据库的表名
//     */
//    public static void autoGeneratorExecute(String... tables) {
//        getAutoGenerator(tables)
//                .setTemplateEngine(new VelocityTemplateEngine())
//                .execute();
//    }
//
//    /**
//     * 获取 MyBatis-Plus 的代码生成器
//     *
//     * @param tables 需要创建的数据库的表名
//     * @return 返回代码生成器
//     */
//    private static AutoGenerator getAutoGenerator(String... tables) {
//        return new AutoGenerator()
//                .setGlobalConfig(globalConfig())    // 设置全局配置
//                .setDataSource(dataSourceConfig())  // 设置数据源配置
//                .setPackageInfo(packageConfig())    // 设置包配置
//                .setStrategy(strategyConfig());     // 设置策略配置
//    }
//
//    /**
//     * 全局配置
//     */
//    private static GlobalConfig globalConfig() {
//        // 全局配置对象
//        return new GlobalConfig()
//                .setOutputDir(CodeGeneratorConfig.outputDir)    // 项目输出目录
//                .setFileOverride(CodeGeneratorConfig.fileOverride)
//                .setOpen(CodeGeneratorConfig.open)
//                .setAuthor(CodeGeneratorConfig.author)   // 开发作者
//                .setSwagger2(CodeGeneratorConfig.swagger2)
//                .setActiveRecord(true)
//                .setBaseResultMap(true)
//                .setBaseColumnList(true)
//                .setDateType(CodeGeneratorConfig.dateType)
//                .setIdType(CodeGeneratorConfig.idType);
//    }
//
//    /**
//     * 数据源配置
//     */
//    private static DataSourceConfig dataSourceConfig() {
//        return new DataSourceConfig()
//                .setDriverName(CodeGeneratorConfig.driverName)
//                .setUrl(CodeGeneratorConfig.url)
//                .setUsername(CodeGeneratorConfig.username)
//                .setPassword(CodeGeneratorConfig.password)
//                .setDbType(CodeGeneratorConfig.dbType);
//    }
//
//    /**
//     * 包配置
//     */
//    private static PackageConfig packageConfig() {
//        return new PackageConfig()
//                .setModuleName(CodeGeneratorConfig.moduleName)
//                .setParent(CodeGeneratorConfig.parent)
//                .setEntity(CodeGeneratorConfig.entity)
//                .setMapper(CodeGeneratorConfig.mapper)
//                .setXml(CodeGeneratorConfig.xml)
//                .setService(CodeGeneratorConfig.service)
//                .setServiceImpl(CodeGeneratorConfig.serviceImpl)
//                .setController(CodeGeneratorConfig.controller);
//    }
//
//    /**
//     * 策略配置
//     *
//     * @param tables 需要创建的表名
//     */
//    private static StrategyConfig strategyConfig(String... tables) {
//        return new StrategyConfig()
//                .setInclude(tables)
//                .setNaming(CodeGeneratorConfig.naming)
//                .setColumnNaming(CodeGeneratorConfig.columnNaming)
//                .setEntityLombokModel(CodeGeneratorConfig.entityLombokModel)
//                //.setLogicDeleteFieldName(CodeGeneratorConfig.logicDeleteFieldName)
//                //.setTableFillList(CodeGeneratorConfig.tableFills)
//                //.setVersionFieldName(CodeGeneratorConfig.versionFieldName)
//                .setRestControllerStyle(CodeGeneratorConfig.restControllerStyle)
//                .setControllerMappingHyphenStyle(CodeGeneratorConfig.controllerMappingHyphenStyle);
//    }
//}
